让Chrome/Firefox轻松兼容老旧的ActiveX,让访问硬件外设变得更友好 | 您所在的位置:网站首页 › chrome 不兼容 › 让Chrome/Firefox轻松兼容老旧的ActiveX,让访问硬件外设变得更友好 |
因为不常来,所以无法及时回复,看到很多人需要交流,请加QQ群:1041052470【JS调用ActiveX解决方案】 同学公司的医院系统是B/S架构的,之前为了兼容各种二代证读卡器(神思、握奇、精纶等)、IC卡读卡器(明华等)、还有各地神奇的健康卡,还有一个奇葩的ActiveX打印控件Lodop,还要支持汉王手写板签名,还要兼容客户的Windows XP,还要照顾前端的js框架......,为了兼容这一切的一切,不得不禁锢在IE8,然而,依然是各种的不兼容,不稳定,不方便...... 本着让世界变得更美好的高尚信念,我帮他们设计了一套解决方案,并帮他们开发了出来,运行多时,还算稳定。 下面,就把系统实现原理和思路简单聊聊: 首先是,解决ActiveX兼容的问题。因为Chrome/Firefox不再支持XPCOM架构,所以写一个浏览器插件来解决这个问题并不是一个可行思路。所以,我用Delphi写一个单独的容器进程调用IE内核来运行各种ActiveX,然后开http接口来和Chrome/Firefox交互,我们暂时给这个容器进程起名叫WebAdapter,里面分别定义二代证、IC卡、健康卡等各种接口,每种接口把硬件类型传递过去。Chrome/Firefox端可以通过JSONP/XMLHttpRequest/WebSocket三种方式来通讯了。 XMLHttpRequest接口通讯是这个样子的: 然后,WebAdapter根据接口名getIdCardInfo调用相应的js文件进行后续处理: getIdCardInfo.js中有同名函数,调用,然后进行根据硬件类型的type参数,再调用getIdCardObj()和getIdCardData()进行硬件的访问和数据的包装,看代码: 用js调用ActiveX: 并把不同硬件厂商的数据包装成统一的格式返回: 返回的数据: 嗯,大概就是这个意思了,文字不够,代码来凑。 配合一个定制的Chrome内核的浏览器,功能更强。 时间不够了,今天先到这里吧,哈哈
|
CopyRight 2018-2019 实验室设备网 版权所有 |